Ext.define('MdxDefine.views.CubeMetaPanel', {
	extend : 'Ext.form.Panel',
	alias : 'widget.CubeMetaPanel',
	requires : [ 'MdxDefine.models.CubeMetaGridModel',
			'MdxDefine.stores.CubeMetaCubeNameStore' ],
	bodyStyle : 'padding: 10px; background-color: #DCE5F0; border-left: none;',
	defaultType : 'textfield',
	layout : {
		type : 'table',
		columns : 2,
		align : 'stretch'
	},
	defaults : {
		anchor : '-10',
		labelWidth : 70
	},
	initComponent : function() {
		var group1 = this.id + 'group1', group2 = this.id + 'group2';

		Ext.apply(this, {
			items : [ {
				id : 'cubeName',
				xtype : 'combobox',
				colspan : 2,
				fieldLabel : 'cube主题',
				emptyText : '请选择cube...',
				name : 'cubeName',
				store : MdxDefine.stores.CubeMetaCubeNameStore,
				displayField : 'name',
				valueField : 'value',
				typeAhead : true,
				allowBlank : false,
				queryMode : 'local',
				listeners : {
					afterRender : function(combo) {
						combo.setValue(combo.store.data.items[0].data.value);
					}
				}
			}, {
				xtype : 'treepanel',
				colspan : 2,
				rootVisible : false,
				useArrows : true,
				frame : true,
				width : 270,
				height : 230,
				store : new Ext.data.TreeStore({
					proxy : {
						type : 'ajax',
						// url: '../jsp/getNodes.jsp'
						url : 'cubeMeta.json'
					},
					root : {
						text : 'Ext JS',
						id : 'src',
						expanded : true
					},
					folderSort : true,
					sorters : [ {
						property : 'text',
						direction : 'ASC'
					} ]
				}),
				margin : '0 0 0 0',
				flex : 1,
				viewConfig : {
					copy:true,
					plugins : {
						ptype : 'treeviewdragdrop',
						ddGroup : group1,
						appendOnly : true,
						sortOnDrop : true,
						containerScroll : true
					}
				}
			}, {
				xtype : 'label',
				colspan : 2,
				text : '在以下区域间拖动字段'
			}, {
				id : 'grid1',
				itemId : 'grid1',
				flex : 1,
				xtype : 'grid',
				height : 150,
				width : 130,
				viewConfig : {
					plugins : {
						ptype : 'gridviewdragdrop',
						dragGroup : group2,
						dropGroup : group1
					},
					listeners : {
						drop : function(node, data, dropRec, dropPosition) {
							// console.dir(this.getRecord());
							// console.dir(this.dataSource.data.keys);
							// console.dir(this);
							// data.records[0].data.id
							// data.records[0].data.text
						}
					}
				},
				store : new Ext.data.Store({
					model : MdxDefine.models.CubeMetaGridModel,
					data : this.myData
				}),

				columns : [ {
					text : 'id',
					flex : 1,
					sortable : true,
					dataIndex : 'id',
					hidden : true
				}, {
					text : '报表筛选',
					width : 130,
					sortable : true,
					dataIndex : 'text'
				} ],
				stripeRows : true
			}, {
				id : 'grid2',
				itemId : 'grid2',
				flex : 1,
				xtype : 'grid',
				height : 150,
				width : 130,
				viewConfig : {
					plugins : {
						ptype : 'gridviewdragdrop',
						dragGroup : group2,
						dropGroup : group1
					},
					listeners : {
						beforedrop : function(node, data, dropRec, dropPosition) {
							var lists1 = Ext.getCmp('grid1').view.dataSource.data.items;
							var lists2 = Ext.getCmp('grid2').view.dataSource.data.items;
							var lists3 = Ext.getCmp('grid3').view.dataSource.data.items;
							var lists4 = Ext.getCmp('grid4').view.dataSource.data.items;
							var toAdd = data.records[0].data.id;
							if ($V.validate(lists1,lists2,lists3,lists4,toAdd,2)) {
								return true;
							} else {
								return false;
							}
						},
						drop : function(node, data, dropRec, dropPosition) {
							Ext.getCmp('mainPanel').generateMdx();
						}
					}
				},
				store : new Ext.data.Store({
					model : MdxDefine.models.CubeMetaGridModel,
					data : this.myData
				}),

				columns : [ {
					text : 'id',
					flex : 1,
					sortable : true,
					dataIndex : 'id',
					hidden : true
				}, {
					text : '列标签',
					width : 130,
					sortable : true,
					dataIndex : 'text'
				} ],
				stripeRows : true
			}, {
				id : 'grid3',
				itemId : 'grid3',
				flex : 1,
				xtype : 'grid',
				height : 150,
				width : 130,
				viewConfig : {
					plugins : {
						ptype : 'gridviewdragdrop',
						dragGroup : group2,
						dropGroup : group1
					},
					listeners : {
						beforedrop : function(node, data, dropRec, dropPosition) {
							var lists1 = Ext.getCmp('grid1').view.dataSource.data.items;
							var lists2 = Ext.getCmp('grid2').view.dataSource.data.items;
							var lists3 = Ext.getCmp('grid3').view.dataSource.data.items;
							var lists4 = Ext.getCmp('grid4').view.dataSource.data.items;
							var toAdd = data.records[0].data.id;
							if ($V.validate(lists1,lists2,lists3,lists4,toAdd,3)) {
								return true;
							} else {
								return false;
							}
						},
						drop : function(node, data, dropRec, dropPosition) {
							Ext.getCmp('mainPanel').generateMdx();
						}
					}
				},
				store : new Ext.data.Store({
					model : MdxDefine.models.CubeMetaGridModel,
					data : this.myData
				}),

				columns : [ {
					text : 'id',
					flex : 1,
					sortable : true,
					dataIndex : 'id',
					hidden : true
				}, {
					text : '行标签',
					width : 130,
					sortable : true,
					dataIndex : 'text'
				} ],
				stripeRows : true
			}, {
				id : 'grid4',
				itemId : 'grid4',
				flex : 1,
				xtype : 'grid',
				height : 150,
				width : 130,
				viewConfig : {
					plugins : {
						ptype : 'gridviewdragdrop',
						dragGroup : group2,
						dropGroup : group1
					},
					listeners : {
						beforedrop : function(node, data, dropRec, dropPosition) {
							var lists1 = Ext.getCmp('grid1').view.dataSource.data.items;
							var lists2 = Ext.getCmp('grid2').view.dataSource.data.items;
							var lists3 = Ext.getCmp('grid3').view.dataSource.data.items;
							var lists4 = Ext.getCmp('grid4').view.dataSource.data.items;
							var toAdd = data.records[0].data.id;
							if ($V.validate(lists1,lists2,lists3,lists4,toAdd,4)) {
								return true;
							} else {
								return false;
							}
						},
						drop : function(node, data, dropRec, dropPosition) {
							Ext.getCmp('mainPanel').generateMdx();
						}
					}
				},
				store : new Ext.data.Store({
					model : MdxDefine.models.CubeMetaGridModel,
					data : this.myData
				}),

				columns : [ {
					text : 'id',
					flex : 1,
					sortable : true,
					dataIndex : 'id',
					hidden : true
				}, {
					text : '数值',
					width : 130,
					sortable : true,
					dataIndex : 'text'
				} ],
				stripeRows : true
			} ]
		});
		this.callParent();
	}
});